package com.example.month11.vp_tab.view;

import android.view.View;
import androidx.viewpager.widget.ViewPager;
import com.example.utils.L;

/**
 * Tab左右滑动，动画效果添加。
 */
public class ScaleTransformer implements ViewPager.PageTransformer {
    private static final float MIN_SCALE = 0.75f;
    private static final float MIN_ALPHA = 0.5f; // 重叠动画

    @Override
    public void transformPage(View page, float position) {
        L.d(page.getTag() + " , pos= " + position);
        // 从a页面 --> b页面：变化规律。
        // a: position:(0, -1)
        // b: position:(1, 0)
        // b --> a
        // a: position:(-1, 0)
        // b: position:(0, 1)

        if (position < -1) {  // [-无穷大, -1]
            page.setScaleX(MIN_SCALE);
            page.setScaleY(MIN_SCALE);
            page.setAlpha(MIN_ALPHA);
        } else if (position <= 1) { // [-1, 1]
            if (position < 0) { // page：左边的页面
                // a到b页面，a的变化。
                // 左边的页面position(0,-1): scaleA = [1,0.75f]
                float scaleA = MIN_SCALE + (1 - MIN_SCALE) * (1 + position); // scaleA的范围：[1,0.75f]
                page.setScaleX(scaleA);
                page.setScaleY(scaleA);
                float alphaA = MIN_ALPHA + (1-MIN_ALPHA) * (1+position);
                page.setAlpha(alphaA); // 1->0.5f, 满满变得不透明

                // b->a:a的变化 position(-1,0): scale = [0.75f,1]
            } else { // page：右边的界面。
                // a->b页面，b的变化。
                // b：position(1,0)   scale:[0.75f, 1]
                float scaleB = MIN_SCALE + (1 - MIN_SCALE) * (1-position);
                page.setScaleX(scaleB);
                page.setScaleY(scaleB);
                // b->a页面，b的变化。
                // b: position(0,1)   scale:[1, 0.75f]

                // 0.5~1
                float alphaB = MIN_ALPHA + (1-MIN_ALPHA)*(1-position);
                page.setAlpha(alphaB);
            }
        } else { // [1, 无穷大]
            page.setScaleX(MIN_SCALE);
            page.setScaleY(MIN_SCALE);
            page.setAlpha(MIN_ALPHA);
        }
    }

}
